<?php

/* estConnecte()
 * Retourne vrai si l'utilisateur est connecté, faux sinon
 */
function estConnecte() {
	//Si la session a été démarrée
	if(isset($_SESSION)) {
		//Si le drapeau "connecte" existe et vaut vrai, on retourne vrai
		if(isset($_SESSION["connecte"]) && $_SESSION["connecte"] === true)
			return true;
	}
	//Sinon on retourne faux
	return false;
}

/* redirigerSiConnecte()
 * Redirige vers l'accueil si l'utilisateur est connecté
 */
function redirigerSiConnecte() {
	if(estConnecte()) {
		header("Location: index.php");
		exit;
	}
}

/* redirigerSiNonConnecte()
 * Redirige vers l'accueil si l'utilisateur est déconnecté
 */
function redirigerSiNonConnecte() {
	if(!estConnecte()) {
		header("Location: index.php");
		exit;
	}
}

/* connecter($id, $mdp)
 * Reçoit deux paramètres :
 *        - $courriel : l'adresse courriel de l'utilisateur
 *        - $mdp : le mot de passe de l'utilisateur
 * Retourne vrai si la connexion a réussi, faux sinon
 */
function connecter($courriel, $deficlient) {
	//Ouverture de la base de données
	$bd = new PDO("mysql:host=localhost;dbname=viagra", "root", "root");
	//Requête (si nbutilisateur=1 alors la connexion a réussi)
	$requete = $bd->query("SELECT id, mdp FROM utilisateur WHERE courriel=".$bd->quote($courriel));
	
	//Si il y a un résultat
	if($resultat = $requete->fetch(PDO::FETCH_OBJ)) {
		
		//Calculer le défi du côté serveur
		$defiserveur = hash("sha512", $resultat->mdp.$_SESSION["CONNEXION_DEFI"]);
		unset($_SESSION["CONNEXION_DEFI"]);
		//Si le défi n'est pas remporté, on ne connecte pas l'utilisateur
		if($defiserveur != $deficlient) {
			//Fermeture de la base de données
			$bd = null;
			//Retourne faux
			return false;
		}
		
		//Mettre le drapeau "connecte" à vrai
		$_SESSION["connecte"] = true;
		//Mettre l'identifiant unique de l'utilisateur
		$_SESSION["id"] = $resultat->id;
		//Mettre le courriel dans la variable de session "courriel"
		$_SESSION["courriel"] = $courriel;
		//Fermer la base de données
		$bd = null;
		//Retourner vrai
		return true;
	}
	//Fermer la base de données
	$bd = null;
	//Retourner faux
	return false;
}

/* deconnecter()
 * Supprime toutes les variables de session et termine la session
 * Retourne vrai si l'opération a réussi, faux sinon
 */
function deconnecter() {
	//Si les sessions utilisent les cookies
	if(ini_get("session.use_cookies")) {
    	$parametres = session_get_cookie_params();
    	setcookie(session_name(), '', time() - 42000,
        	$parametres["path"], 	$parametres["domain"],
        	$parametres["secure"], 	$parametres["httponly"]
    	);
	}
	//On retourne la valeur de retour de session_destroy() qui détruit la session
	return session_destroy();
}

?>